package SPAN::Method::LinearSystem::GaussElimination;

use warnings;
use strict;

use Reaction::Class;

use Math::Calculus::GaussElimination;
use Reaction::Types::Core;
use SPAN::Types::Math::Calculus;

class GaussElimination is 'SPAN::Method', which {

    implements backend      => as {'Math::Calculus::GaussElimination'};
    implements display_name => as {'Gauss Elimination'};

    has matrix => (
        isa => 'Matrix',
        is  => 'rw',
        set_or_lazy_fail('matrix')
    );
    has vector => ( isa => 'Vector', is => 'rw', set_or_lazy_fail('vector') );

};

1;
